/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package slent.iespana.es.visualizacion;

import java.awt.*;
import javax.swing.*;
import javax.media.opengl.*;
import com.sun.opengl.util.Animator;
import es.iespana.slent.reaccion.ObjectFactory;
import es.iespana.slent.reaccion.Reaccion;
import java.io.*;
import javax.xml.bind.*;

/**
 *
 * @author slent
 */
public class VisualizadorReaciones extends JFrame {

    private GLCapabilities capabilities;
    private GLCanvas canvas;
    private Reaccion reaccion;

    public VisualizadorReaciones(Reaccion reaccion) {
        this.reaccion = reaccion;
        crearGUI();
        setMinimumSize(new Dimension(800, 600));
        setDefaultCloseOperation(EXIT_ON_CLOSE);

    }

    private void crearGUI() {
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {
                capabilities = new GLCapabilities();
                canvas = new GLCanvas(capabilities);
                DibujadorReacciones dibujador= new DibujadorReacciones(reaccion);
                canvas.addGLEventListener(dibujador);
//                canvas.addMouseWheelListener(dibujador);
//                canvas.addMouseMotionListener(dibujador);
                setLayout(new BorderLayout());
                add(canvas);
                Animator animador = new Animator(canvas);
                animador.start();
            }
        });
    }

    public static void main(String[] args) {//55168128
        SwingUtilities.invokeLater(new Runnable() {

            public void run() {

                Reaccion reaccionAcargar= new Reaccion();

                String carpetaUsuario = System.getProperty("user.home");
                File carpetaPrograma = new File(carpetaUsuario + File.separator + "flaquimica");
                File archivo = new File(carpetaPrograma + File.separator + "ejemploReaccion_NH3.xml");
                if (!archivo.exists()) {
                    System.out.println("El archivo " + archivo.getName() + " no existe");
                } else {
                    //cargamos desde ese archivo
                    try {
                        JAXBContext ctx = JAXBContext.newInstance(Reaccion.class.getPackage().getName());
                        Unmarshaller u = ctx.createUnmarshaller();
                        JAXBElement rootTabla = (JAXBElement) u.unmarshal(archivo);
                        reaccionAcargar = (Reaccion) rootTabla.getValue();
                        System.out.println("se cargó la reacción bien");
                    } catch (JAXBException jbe) {
                        System.out.println("Error en la carga de la reaccion. " + jbe.getMessage());
                    }
                }



                VisualizadorReaciones visualizador = new VisualizadorReaciones(reaccionAcargar);
                visualizador.setVisible(true);
            }
        });
    }
}
